/**
 * 普查统计子系统 郭华 2021-5-25
 * exampleDivisions 全国试点县
 * Menu 所有菜单 配合组合树使用 单个菜单有menuId, parentId, menuName 字段
 * Date 文件位置'static/app/date' 返回对象{currentdate, currentweek, currentmonth}
 * judgeType 判断省市区类型和已选的行政区划类型是否一致 不一致返回false
 * @type 所选的省市区， '省','市','区'
 * @dataType 数据类型 0: '数据上报'; 1：'数据质检'
 * 
 */

define([
    'static/app/exampleDivisions',
    'static/app/menu',
    'static/app/date',
    "UtilDir/util",
    "UtilDir/tool",
    "UtilDir/combotree",
    "UtilDir/org/selectOrg",
    "UtilDir/searchBlock",
    "UtilDir/loading",
    "Date", "DateCN", "css!DateCss",
    "EasyUI", "EasyUI-lang",
], function (exampleDivisions, Menu, Date, Util, Tool, Combotree, SelectOrg, SearchBlock, Loading) {
    const provinceType = ["Municipality", "Province", 'Autonomous Region', 'Special Administrative Region'] // 省级
    const cityType = ["Prefecture-level City", "Autonomous Prefecture", "Prefecture", 'League'] // 市级
    const areaType = ["District", "County", "Autonomous County", "County-level City", "Banner", "Autonomous Banner", "Forestry Area", 'Special District'] //区县级
    var getDivisionController = function () {
        return getServer() + "/platform/org/divisions/";
    };
    var getController = function () {
        return getServer() + "/pc";
    };
    var divisioncombotree // 行政区划组合树
    var menucombotree // 菜单组合树
    var selectedDivisions = [] // 组合树已选行政区划
    var selectedMenus = [] // 组合树已选的菜单
    var selectedType = '' // 已选省市区类别
    // 初始化
    var init = function () {
        initDatebox()
        initDivision()
        btnInit()
        initMenu()
        SearchBlock.init("searchBlock");
        $('#type').on('change', function (e) {
            selectedType = e.currentTarget.value
        })
        // 设定所有试点区县
        selectedDivisions = [
                {
                    divisionId: "root",
                    divisionCode: "root",
                    divisionName: "中华人民共和国"
                },
                // {
                //     divisionId: "cd726776c7de41e4a41dcdb3d90b2806",
                //     divisionCode: "110000",
                //     divisionName: "北京市"
                // },
                // {
                //     divisionId: "225ac763ab714524b87d95140a93a4a5",
                //     divisionCode: "120000",
                //     divisionName: "天津市"
                // },
                // {
                //     divisionId: "a1532e75535442d1bccf3a32e7841e79",
                //     divisionCode: "130000",
                //     divisionName: "河北省"
                // },
                // {
                //     divisionId: "2dc63a0f7551425283f9cee643d46f1b",
                //     divisionCode: "140000",
                //     divisionName: "山西省"
                // },
                // {
                //     divisionId: "5f18434d356f4e6eb068bf252f2f19ff",
                //     divisionCode: "150000",
                //     divisionName: "内蒙古自治区"
                // },

                // {
                //     divisionId: "c40625160ee6409892204e2809a78da4",
                //     divisionCode: "210000",
                //     divisionName: "辽宁省"
                // },
                // {
                //     divisionId: "71e49ff0bf844a30bc9cf6a139280da6",
                //     divisionCode: "220000",
                //     divisionName: "吉林省"
                // },
                // {
                //     divisionId: "5fba31cfd5fc40c5ac89e4089dd99b08",
                //     divisionCode: "230000",
                //     divisionName: "黑龙江省"
                // },
                // {
                //     divisionId: "8a3f7d3f78ad456f92f487a979091c7f",
                //     divisionCode: "310000",
                //     divisionName: "上海市"
                // },
            ],
            selectedMenus = [{
                    menuId: 3,
                    menuName: '地震危险性评价图',
                    parentId: 'root'
                },
                {
                    menuId: 7,
                    menuName: '直接经济损失风险等级图',
                    parentId: 'root'
                },
                {
                    menuId: 13,
                    menuName: '死亡人口风险等级图',
                    parentId: 'root'
                },
                // {
                //     menuId: 19,
                //     menuName: '防治区划图',
                //     parentId: 'root'
                // },
                // {
                //     menuId: 23,
                //     menuName: '房屋建筑、市政设施隐患评估图',
                //     parentId: 'root'
                // },
                // {
                //     menuId: 27,
                //     menuName: '场地地震工程地质条件钻孔',
                //     parentId: 'root'
                // },
                // {
                //     menuId: 30,
                //     menuName: '活动断层分布图编制',
                //     parentId: 'root'
                // },
                // {
                //     menuId: 32,
                //     menuName: '地震构造图编制',
                //     parentId: 'root'
                // },
                // {
                //     menuId: 34,
                //     menuName: '活动断层采集数据',
                //     parentId: 'root'
                // }
            ]
        createAuditGrid({
            startTime: '',
            endTime: '',
            dataType: '0',
            divisions: selectedDivisions.map(item => {
                return item.divisionCode
            }).toString(), //将行政区划的divisionCode作为参数
            menuIds: selectedMenus.map(item => {
                return item.menuId
            }).toString(), //将选择的菜单的menuId作为参数
            type: '省' // 默认状态下选择省
        })
    }
    // 初始化时间选择组件
    var initDatebox = function () {
        $('#dt1').datebox({});
        $('#dt2').datebox({});
        $('#timeSelect').on('change', function () {
            switch ($('#timeSelect').val()) {
                case 'today':
                    $('#dt1').datebox({
                        disabled: true,
                    })
                    $('#dt2').datebox({
                        disabled: true,
                    });
                    $('#dt1').datebox('setValue', Date.currentdate)
                    $('#dt2').datebox('setValue', Date.currentdate)
                    break;
                case 'thisweek':
                    $('#dt1').datebox({
                        disabled: true
                    });
                    $('#dt2').datebox({
                        disabled: true
                    });
                    $('#dt1').datebox('setValue', Date.currentweek[0])
                    $('#dt2').datebox('setValue', Date.currentweek[1])
                    break;
                case 'thismonth':
                    $('#dt1').datebox({
                        disabled: true
                    });
                    $('#dt2').datebox({
                        disabled: true
                    });
                    $('#dt1').datebox('setValue', Date.currentmonth[0])
                    $('#dt2').datebox('setValue', Date.currentmonth[1])
                    break;
                default:
                    $('#dt1').datebox({
                        disabled: false
                    });
                    $('#dt2').datebox({
                        disabled: false
                    });
            }
        })
    }
    // 初始化行政区划
    var initDivision = function () {
        $.ajax({
            url: getDivisionController() + 'initDivisionZtree',
            type: 'GET',
            success: function (res) {
                // 实例化组合树
                divisioncombotree = Combotree({
                    // combo组件相关配置
                    combo: {
                        //要渲染的input的id
                        id: "division",
                        //下拉框的类型：单选or多选
                        multi: true,
                        key: {
                            idKey: "divisionId",
                            textKey: "divisionName"
                        },
                        // placeholder: "请选择……",
                        event: {
                            onShowPanel: function () {},
                            onHidePanel: function () {},
                            onChange: function (n, o) {
                                debugger
                                // console.log(n)
                                selectedDivisions = n
                                // if (n[0] && n[0].divisionName == "中华人民共和国") {
                                //     Util.alert("请不要选择中华人民共和国", function () {
                                //         $("#division").val('');
                                //         $("#divisionId").val('');
                                //     })
                                //     divisioncombotree.clear()
                                //     selectedDivisions = []
                                // } else {
                                //     n[0] && $("#divisionId").val(n[0].divisionId);
                                //     n[0] && $("#division").val(n[0].divisionName);
                                // }
                                n[0] && $("#divisionId").val(n[0].divisionId);
                                n[0] && $("#division").val(n[0].divisionName);
                            }
                        }
                    },
                    // ztree组件相关配置
                    ztree: {
                        data: {
                            simpleData: {
                                enable: true,
                                idKey: "divisionId", // 主键属性名
                                pIdKey: "parentId" // 父节点属性名
                            },
                            key: {
                                name: "divisionName" // 显示名称属性名
                            }
                        },
                        check: {
                            chkboxType: {
                                'Y': '',
                                'N': ''
                            }
                        }
                    },
                    data: res,
                    formatter: function (node) {
                        node.open = false;
                    },
                    value: $("#divisionId").val(),
                    search: {
                        enable: true,
                        fields: ["divisionName"]
                    }
                });
            }
        });
    }
    // 判断行政区划是否与省市区符合 @type
    var judgeType = function (typeValue) {
        let result = true
        switch (typeValue) {
            case '全国':
                selectedDivisions.forEach(item => {
                    if (item.divisionType != "Country") {
                        result = false
                    }
                })
                break;
            case '省':
                debugger
                selectedDivisions.forEach(item => {
                    if (provinceType.indexOf(item.divisionType) < 0) {
                        result = false
                    }
                })
                break;
            case '市':
                selectedDivisions.forEach(item => {
                    if (cityType.indexOf(item.divisionType) < 0) {
                        result = false
                    }
                })
                break;
            case '区':
                selectedDivisions.forEach(item => {
                    if (areaType.indexOf(item.divisionType) < 0) {
                        result = false
                    }
                })
                break;
        }
        return result
    }
    var createAuditGrid = function (params) {
        var opts1;
        let divisions
        $.ajax({
            url: getController() + "/statistics",
            // dataType: "application/json;charset=UTF-8",
            type: "POST",
            data: params,
            success: function (res) {
            	console.log(res)
                if (res.length) {
                    divisions = res[0].divisionDataList
                    // datagrid 中的columns 根据已选择的行政区划来改变
                    var columns = selectedDivisions.map(item => {
                        let divisionName = item.divisionName
                        let divisionCode = item.divisionCode
                        let obj = {
                            field: item.divisionId,
                            title: divisions.filter(item => {
                                return item.division.split(',').pop() == divisionName
                            })[0].division,
                            width: '10%',
                            align: 'center',
                            formatter: function (value, rowData, rowIndex) {
                                let divisionDataList = rowData.divisionDataList
                                let collectionCount // 上报的数量 
                                let qualityCount // 质检的数量
                                divisionDataList.forEach(item => {
                                    // 根据item.division的最后一个区划与 divisionName 匹配 
                                    if (item.division.split(',').pop() == divisionName) {
                                        collectionCount = item.collectionCount
                                        qualityCount = item.qualityCount
                                    }
                                })
                                // 根据datatype的值来决定返回collectionCount还是qualityCount
                                if ($('#dataType').val() == '1') {
                                    return qualityCount
                                } else {
                                    return collectionCount
                                }
                            }
                        }
                        return obj
                    })
                    $("#auditGrid").datagrid({
                        url: getController() + "/statistics",
                        contentType: "application/json;charset=UTF-8",
                        method: "POST",
                        fitColumns: true,
                        autoRowHeight: false,
                        nowrap: false,
                        striped: true,
                        frozenColumns: [[
			                {
                                field: 'taskName',
                                title: '任务名称',
                                align: 'center',
                                width: '15%',
                                formatter: function (value, rowData, rowIndex) {
                                    // console.log(rowData)
                                    return getMenuNameById(rowData.menuId)[0].menuName
                                },
                            },
				        ]],
                        columns: [
                            [
                                ...columns
                            ]
                        ],
                        queryParams: params,
                        toolbar: [{
                            iconCls: 'fa fa-download',
                            text: "导出",
                            handler: function () {
                                exportProject()
                            }
                        }],
                        // fit: true,
                        onLoadSuccess: function (data) {
                            // console.log(data)
                        },
                        // pagination: true,
                        // pageSize: 10
                    });
                }
            }
        })
    };
    // 初始化菜单类型
    var initMenu = function () {
        menucombotree = Combotree({
            // combo组件相关配置
            combo: {
                //要渲染的input的id
                id: "menu",
                //下拉框的类型：单选or多选
                multi: true,
                key: {
                    idKey: "menuId",
                    textKey: "menuName"
                },
                // placeholder: "请选择……",
                event: {
                    onShowPanel: function () {},
                    onHidePanel: function () {},
                    onChange: function (n, o) {
                        selectedMenus = n
                        n[0] && $("#menuId").val(n[0].menuId);
                        n[0] && $("#menu").val(n[0].menuName);
                    }
                }
            },
            // ztree组件相关配置
            ztree: {
                data: {
                    simpleData: {
                        enable: true,
                        idKey: "menuId", // 主键属性名
                        pIdKey: "parentId" // 父节点属性名
                    },
                    key: {
                        name: "menuName" // 显示名称属性名
                    }
                },
                check: {
                    chkboxType: {
                        'Y': '',
                        'N': ''
                    }
                }
            },
            data: Menu,
            formatter: function (node) {
                node.open = false;
            },
            value: $("#menuId").val(),
            search: {
                enable: true,
                fields: ["menuName"]
            }
        });
    }
    // 初始化按钮 重置和查询
    var btnInit = function () {
        $('#btnSearch').on('click', function () {
            if (!$('#type').val() && selectedDivisions.length) {
                alert('请选择省市区')
                return
            }
            if ($('#type').val() && !judgeType($('#type').val())) {
                alert('行政区划与所选省市县级别不一致')
                return
            }
            // 把已选择的行政区划的divisionCode作为参数
            var divisions = selectedDivisions.map(item => {
                return item.divisionCode
            }).toString()
            // 把已选择的菜单类型的menuId 作为参数
            var menuIds = selectedMenus.map(item => {
                return item.menuId
            }).toString()
            var params = {
                startTime: $('#dt1').datebox('getValue'),
                endTime: $('#dt2').datebox('getValue'),
                dataType: $('#dataType').val() || '0',
                divisions,
                menuIds,
                type: $('#type').val(),
            }
            createAuditGrid(params)
        })
        $('#btnReset').on('click', function () {
            $('#type').val('省')
            $('#timeSelect').val('')
            $('#dt1').datebox('setValue', '')
            $('#dt2').datebox('setValue', '')
            $('#dataType').val('0')
            selectedDivisions = []
            selectedMenus = []
            divisioncombotree.clear()
            menucombotree.clear()
        })
        $('#btnSelectDivision').on('click', function () {
            selectedDivisions = exampleDivisions.exampleDivisions
            divisioncombotree.setValue(exampleDivisions.exampleDivisions)
            // console.log($('#type').val('区'))
            $('#type').val('区')
        })
    }
    // 用过菜单ID找菜单名称 @menuId
    var getMenuNameById = function (id) {
        return Menu.filter(item => {
            return item.menuId == id
        })
    }
    // 导出
    var exportProject = function () {
        // 把已选择的行政区划的divisionCode作为参数
        var divisions = selectedDivisions.map(item => {
            return item.divisionCode
        }).toString()
        // 把已选择的菜单类型的menuId 作为参数
        var menuIds = selectedMenus.map(item => {
            return item.menuId
        }).toString()
        var params = {
            startTime: $('#dt1').datebox('getValue'),
            endTime: $('#dt2').datebox('getValue'),
            dataType: $('#dataType').val() || '0',
            divisions,
            menuIds,
            type: $('#type').val(),
        }
        // $.ajax({
        //     url: getController() + "/isEmpty",
        //     data: params,
        //     type: "get",
        //     success: function (data) {
        //         // console.log(data);
        //         if (data.message == '否') {
        //             window.location.href = getController() + "/export?startTime=" + (params.startTime || '') + "&endTime=" + (params.endTime || '') + "&dataType=" + (params.dataType || '') + "&divisions=" + (params.divisions || '') + "&menuIds=" + (params.menuIds || '') + "&type=" + (params.type || '');
        //         } else if (data.message == '是') {
        //             Util.alert('该类型数据数据为空，无法导出！');
        //         } else {
        //             // 未选择类型，请选择一种类型！
        //             Util.alert(data.message);
        //         }
        //     }
        // });
        window.location.href = getController() + "/export?startTime=" + (params.startTime || '') + "&endTime=" + (params.endTime || '') + "&dataType=" + (params.dataType || '') + "&divisions=" + (params.divisions || '') + "&menuIds=" + (params.menuIds || '') + "&type=" + (params.type || '');
    }
    return {
        init:init
    }
})